<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>变量与常量</title>
</head>
<body>
<script>
    // 弱类型语言
    // JS是一种弱类型语言 不需要指明变量的数据类型
    // 1.声明变量
    // 1.1
    // var声明变量 全局作用域(类比java中的全部变量) 用var声明的变量名可以重复使用重复声明
    var a = 10;
    var b = 3.3;
    var c = '你好';
    var d = "好呀";// 单引号/双引号都可以
    var e = true;
    console.log(a, b, c, d, e);// 可以一次性打印多个值 用逗号隔开即可
    // 根据存的值来推断变量的类型 关键字: typeof 变量名/变量值
    console.log(typeof a, typeof b, typeof c, typeof d, typeof e);
    console.log(typeof 3.3, typeof "好呀", typeof false);

    // 1.2
    // JS变量可以被修改为不同的类型
    a = 3.33;
    console.log(a,typeof a);// 3.33 `number`
    a = false;
    console.log(a,typeof a);// false `boolean`
    // 用var声明的变量名可以重复使用重复声明
    var a = '测试文段';
    console.log(a,typeof a);// 测试文段 string

    // 1.3
    // 被let声明的变量 块级作用域(类比java中的局部变量) 且无法重复声明为其他类型的变量 但是可以进行值的修改(可以修改为其他类型)
    let x = 1;
    console.log(x,typeof x);
    x=3.333;
    console.log(x,typeof x);
    x='测试文段';
    console.log(x,typeof x);
    // let x = false;// 报错 x是被let声明的 此前已经被声明过了
    // console.log(x,typeof x);


    // 2.声明常量
    // 被const声明的量为常量 无法进行值的修改
    // 解决措施: 可以改为let声明方式声明为变量
    const y = 2;
    console.log(y,typeof y);
    // y=33;// 无法修改常量值
</script>
</body>
</html>